In this notebook I will compare the flora of two contemporaries that we learned about in class namely, Jane Colden and David Hosack.

#We will begin by importing Jane Colden's Flora 
getwd()
[1] "/Users/Ana-MariaRodriguez/Desktop/Plants and profits/portfolio-4-am1217"
setwd("/Users/Ana-MariaRodriguez/Desktop/Plants and profits/portfolio-4-am1217")
read.csv("JaneColden.csv")
Janecolden <- read.csv("JaneColden.csv")
JC<-c("Alisma trivialis",
"Sagittaria latifolia",
"Arisaema triphyllum",
"Lilium philadelphicum", 
"Lilium superbum",
"Erythronium americanum",
"Smilacina racemosa",
"Maianthemum canadense",
"Medeola virginiana",
"Trillium erectum",
"Cypripedium calceolus",
"Calopogon tuberosus",
"Saururus cernuus",
"Quercus alba",
"Asarum canadense",
"Aristolochia serpentaria",
"Phytolacca decandra",
"Anemone hepatica",
"Caltha palustris",
"Coptis trifolia",
"Sanguinaria canadensis",
"Dentaria diphylla",
"Sarracenia purpurea",
"Mitella diphylla",
"Saxifraga virginiana",
"Rubus ordoratus",
"Baptisia tinctoria",
"Lupinus perennis",
"Apios americana",
"Polygala senega",
"Ludwigia palustris",
"Staphylea trifolia",
"Circaea quadrisulcata",
"Aralia nudicaulis",
"Cornus florida",
"Kalmia angustifolia",
"Lysimachia quadrifolia",
"Steironema ciliatum",
"Asclepias tuberosa",
"Verbena hastata",
"Monarda didyma",
"Hedeoma pulegioides",
"Pycnanthemum incanum", 
"Collinsonia canadensis",
"Verbascum blattaria",
"Chelone glabra",
"Mimulus ringens",
"Veronicastrum virginicum",
"Aureolaria virginica",
"Melampyrum lineare",
"Pedicularis canadensis",
"Sambucus canadensis",
"Lobelia cardinalis",
"Solidago sqarrosa",
"Gnaphalium obtusifolium",
"Ambrosia artemisiifolia",
"Rudbeckia triloba",
"Helenium atumnale")
JC
 [1] "Alisma trivialis"         "Sagittaria latifolia"     "Arisaema triphyllum"      "Lilium philadelphicum"    "Lilium superbum"         
 [6] "Erythronium americanum"   "Smilacina racemosa"       "Maianthemum canadense"    "Medeola virginiana"       "Trillium erectum"        
[11] "Cypripedium calceolus"    "Calopogon tuberosus"      "Saururus cernuus"         "Quercus alba"             "Asarum canadense"        
[16] "Aristolochia serpentaria" "Phytolacca decandra"      "Anemone hepatica"         "Caltha palustris"         "Coptis trifolia"         
[21] "Sanguinaria canadensis"   "Dentaria diphylla"        "Sarracenia purpurea"      "Mitella diphylla"         "Saxifraga virginiana"    
[26] "Rubus ordoratus"          "Baptisia tinctoria"       "Lupinus perennis"         "Apios americana"          "Polygala senega"         
[31] "Ludwigia palustris"       "Staphylea trifolia"       "Circaea quadrisulcata"    "Aralia nudicaulis"        "Cornus florida"          
[36] "Kalmia angustifolia"      "Lysimachia quadrifolia"   "Steironema ciliatum"      "Asclepias tuberosa"       "Verbena hastata"         
[41] "Monarda didyma"           "Hedeoma pulegioides"      "Pycnanthemum incanum"     "Collinsonia canadensis"   "Verbascum blattaria"     
[46] "Chelone glabra"           "Mimulus ringens"          "Veronicastrum virginicum" "Aureolaria virginica"     "Melampyrum lineare"      
[51] "Pedicularis canadensis"   "Sambucus canadensis"      "Lobelia cardinalis"       "Solidago sqarrosa"        "Gnaphalium obtusifolium" 
[56] "Ambrosia artemisiifolia"  "Rudbeckia triloba"        "Helenium atumnale"       
tree_phylomatic_JC1 <- phylomatic(taxa = JC, get = 'POST')
plot(tree_phylomatic_JC1, no.margin = TRUE, type="phylogram")

newick_fn4 = "tree_phylomatic_JC1"
write.tree(tree_phylomatic_JC1, file=newick_fn4)
#repeating to get tree from Zanne2014
tree_phylomatic_JC2 <- phylomatic(taxa = JC, storedtree ="zanne2014", get = 'POST')
plot(tree_phylomatic_JC2, no.margin = TRUE, type="phylogram")

newick_fn5 = "tree_phylomatic_JC2"
write.tree(tree_phylomatic_JC2, file=newick_fn5)
#here we created two phylogenies of Jane Colden's Flora. We created a newick tree, and we also created one using a database of evolutionary relationships stored in Zanne tree.
plot(tree_phylomatic_JC1, type="unrooted")

plot(tree_phylomatic_JC1, type="cladogram")
pdf_fn = "tree_phylomatic_JC1.pdf"
pdf(file=pdf_fn)
plot(tree_phylomatic_JC1, type="unrooted", edge.width=5, edge.color="blue", lab4ut="axial")
dev.off()
quartz_off_screen 
                2 

cmdstr = paste("open ", pdf_fn, sep="")
system(cmdstr)
newick_fn = "tree_phylomatic_JC1"
write.tree(tree_phylomatic_JC1, file=newick_fn)
getwd()
[1] "/Users/Ana-MariaRodriguez/Desktop/Plants and profits/portfolio-4-am1217"
#now we will do the same thing with Hosack's list, however because his list came from a photocopy of his flora and there are over 60 pages of it (It would take me 7 years to type into an excel sheet since I already tried uploading it onto globalnames.org to get a text of all the words on the list and it said there were only 2 when there are clearly over 600) I will randomly select some species, and also check for any overlap with Colden's list. 
read.csv("DavidHosack.csv")
Davidhosack <- read.csv("DavidHosack.csv")
DH<-c("Abroma augustum",
"Abrus precatorius",
"Mimosa arborea L.",
"Mimosa filicifolia Lmk",
"Mimosa brachbyloba Vent.",
"Mimosa illinoensis Mich.",
"Mimosa discolor Andr.",
"Mimosa botrycephala Vent.",
"Mimosa faleata Willd.",
"Mimosa obliqua Vent.",
"Mimosa farnesiana L.",
"Mimosa floribunda Vent.", 
"Mimosa glauea L.",
"Mimosa glaucescens Willd.",
"Mimosa binervia Wend.",
"Mimosa julibrissin Ait.",
"Mimosa iatronum L.",
"Mimosa lebbek L.",
"Mimosa pennata L.",
"Mimosa pulcherrina Willd.",
"Mimosa speciosa Willd.",
"Mimosa suaveolens sm. ",
"Mimosa vera Willd.",
"Mimosa nilotica L.",
"Acalypha carolinia Mich.",
"Acalypha virginica L.",
"Acanthus mollis L. ",
"Acanthus spinosus L.",
"Acer dasycarpum Ehrt.",
"Aralia nudicaulis",
"Anemone hepatica ",
"Asarum canadense ",
"Betula vulgaris ",
"Calendula officinalis",
"Cornus florida",
"Circaea alpina ",
"Collinsonia canadensis",
"Convolvulus batatas",
"Chelone formosa",
"Chelone glabra", 
"Gnaphalium obtusifolium",
"Helenium autumnale",
"Monarda didyma",
"Kalmia angustifolia",
"Lilium philadelphicum", 
"Lilium superbum",
"Lunaria annus",
"Lysimachia quadrifolia", 
"Medeola virginica",
"Mimulus ringens",
"Melanthium virginicum",
"Lobelia cardinalis",
"Polygala senega",
"Prunus avium",
"Quercus alba",
"Rosa alba",
"Rubus odoratus",
"Rudbeckia perfoliata",
"Sagittaria latifolia",
"Trillium erectum",
"Saxifraga virgiana",
"Zanthoxylum americanum", 
"Viola canadensis",
"Veronica virginica",
"Verbascum blattarium", 
"Zea mays")
DH
 [1] "Abroma augustum"           "Abrus precatorius"         "Mimosa arborea L."         "Mimosa filicifolia Lmk"   
 [5] "Mimosa brachbyloba Vent."  "Mimosa illinoensis Mich."  "Mimosa discolor Andr."     "Mimosa botrycephala Vent."
 [9] "Mimosa faleata Willd."     "Mimosa obliqua Vent."      "Mimosa farnesiana L."      "Mimosa floribunda Vent."  
[13] "Mimosa glauea L."          "Mimosa glaucescens Willd." "Mimosa binervia Wend."     "Mimosa julibrissin Ait."  
[17] "Mimosa iatronum L."        "Mimosa lebbek L."          "Mimosa pennata L."         "Mimosa pulcherrina Willd."
[21] "Mimosa speciosa Willd."    "Mimosa suaveolens sm. "    "Mimosa vera Willd."        "Mimosa nilotica L."       
[25] "Acalypha carolinia Mich."  "Acalypha virginica L."     "Acanthus mollis L. "       "Acanthus spinosus L."     
[29] "Acer dasycarpum Ehrt."     "Aralia nudicaulis"         "Anemone hepatica "         "Asarum canadense "        
[33] "Betula vulgaris "          "Calendula officinalis"     "Cornus florida"            "Circaea alpina "          
[37] "Collinsonia canadensis"    "Convolvulus batatas"       "Chelone formosa"           "Chelone glabra"           
[41] "Gnaphalium obtusifolium"   "Helenium autumnale"        "Monarda didyma"            "Kalmia angustifolia"      
[45] "Lilium philadelphicum"     "Lilium superbum"           "Lunaria annus"             "Lysimachia quadrifolia"   
[49] "Medeola virginica"         "Mimulus ringens"           "Melanthium virginicum"     "Lobelia cardinalis"       
[53] "Polygala senega"           "Prunus avium"              "Quercus alba"              "Rosa alba"                
[57] "Rubus odoratus"            "Rudbeckia perfoliata"      "Sagittaria latifolia"      "Trillium erectum"         
[61] "Saxifraga virgiana"        "Zanthoxylum americanum"    "Viola canadensis"          "Veronica virginica"       
[65] "Verbascum blattarium"      "Zea mays"                 
tree_phylomatic_DH1 <- phylomatic(taxa = DH, get = 'POST')
plot(tree_phylomatic_DH1, no.margin = TRUE, type="phylogram")

newick_fn4 = "tree_phylomaticDH1"
write.tree(tree_phylomatic_DH1, file=newick_fn4)
#repeating to get tree from Zanne2014
tree_phylomatic_DH2 <- phylomatic(taxa = DH, storedtree ="zanne2014", get = 'POST')
plot(tree_phylomatic_DH2, no.margin = TRUE, type="phylogram")

newick_fn5 = "tree_phylomatic_DH2"
write.tree(tree_phylomatic_DH2, file=newick_fn5)
#now I will plot and save them in different formats
plot(tree_phylomatic_DH1, type="unrooted")

plot(tree_phylomatic_DH1, type="cladogram")
pdf_fn = "tree_phylomatic_DH1.pdf"
pdf(file=pdf_fn)
plot(tree_phylomatic_DH1, type="unrooted", edge.width=5, edge.color="blue", lab4ut="axial")
dev.off()
quartz_off_screen 
                2 

cmdstr = paste("open ", pdf_fn, sep="")
system(cmdstr)
newick_fn = "tree_phylomatic_DH1"
write.tree(tree_phylomatic_DH1, file=newick_fn)
getwd()
[1] "/Users/Ana-MariaRodriguez/Desktop/Plants and profits/portfolio-4-am1217"
#Now that I have phylogenized both lists, I will put them into a matrix so that we can compare similarity and dissimilarities between the two. 
library(labdsv)
jcdh <- read.csv("JCDH.csv", row.names = 1)
incomplete final line found by readTableHeader on 'JCDH.csv'
jcdh
jcdh <- as.matrix(jcdh)
dim(jcdh)
[1]   2 103
class(jcdh)
[1] "matrix"
jcdh
              Abroma.augustum Abrus.precatorius Mimosa.arborea.L. Mimosa.filicifolia.Lmk
David Hosack                1                 1                 1                      1
Jane Colden                 0                 0                 0                      0
              Mimosa.brachbyloba.Vent. Mimosa.illinoensis.Mich. Mimosa.discolor.Andr.
David Hosack                         1                        1                     1
Jane Colden                          0                        0                     0
              Mimosa.botrycephala.Vent. Mimosa.faleata.Willd. Mimosa.obliqua.Vent. Mimosa.farnesiana.L.
David Hosack                          1                     1                    1                    1
Jane Colden                           0                     0                    0                    0
              Mimosa.floribunda.Vent. Mimosa.glauea.L. Mimosa.glaucescens.Willd. Mimosa.binervia.Wend.
David Hosack                        1                1                         1                     1
Jane Colden                         0                0                         0                     0
              Mimosa.julibrissin.Ait. Mimosa.iatronum.L. Mimosa.lebbek.L. Mimosa.pennata.L.
David Hosack                        1                  1                1                 1
Jane Colden                         0                  0                0                 0
              Mimosa.pulcherrina.Willd. Mimosa.speciosa.Willd. Mimosa.suaveolens.sm. Mimosa.vera.Willd.
David Hosack                          1                      1                     1                  1
Jane Colden                           0                      0                     0                  0
              Mimosa.nilotica.L. Acalypha.carolinia.Mich. Acalypha.virginica.L. Acanthus.mollis.L.
David Hosack                   1                        1                     1                  1
Jane Colden                    0                        0                     0                  0
              Acanthus.spinosus.L. Acer.dasycarpum.Ehrt. Aralia.nudicaulis Anemone.hepatica Asarum.canadense
David Hosack                     1                     1                 1                1                1
Jane Colden                      0                     0                 1                1                1
              Betula.vulgaris Calendula.officinalis Cornus.florida Circaea.alpina Collinsonia.canadensis
David Hosack                1                     1              1              1                      1
Jane Colden                 0                     0              1              0                      1
              Convolvulus.batatas Chelone.formosa Chelone.glabra Gnaphalium.obtusifolium Helenium.autumnale
David Hosack                    1               1              1                       1                  1
Jane Colden                     0               1              0                       0                  1
              Monarda.didyma Kalmia.angustifolia Lilium.philadelphicum Lilium.superbum Lunaria.annus
David Hosack               1                   1                     1               1             1
Jane Colden                1                   1                     1               1             0
              Lysimachia.quadrifolia Medeola.virginica Mimulus.ringens Melanthium.virginicum
David Hosack                       1                 1               1                     1
Jane Colden                        1                 1               1                     0
              Lobelia.cardinalis Polygala.senega Prunus.avium Quercus.alba Rosa.alba Rubus.odoratus
David Hosack                   1               1            1            1         1              1
Jane Colden                    1               1            0            1         0              1
              Rudbeckia.perfoliata Sagittaria.latifolia Trillium.erectum Saxifraga.virgiana
David Hosack                     1                    1                1                  1
Jane Colden                      0                    1                1                  1
              Zanthoxylum.americanum Viola.canadensis Veronica.virginica Verbascum.blattarium Zea.mays
David Hosack                       1                1                  1                    1        1
Jane Colden                        0                0                  1                    1        0
              Alisma.trivialis Arisaema.triphyllum Erythronium.americanum Smilacina.racemosa
David Hosack                 0                   0                      0                  0
Jane Colden                  1                   1                      1                  1
              Maianthemum.canadense Cypripedium.calceolus Calopogon.tuberosus Saururus.cernuus
David Hosack                      0                     0                   0                0
Jane Colden                       1                     1                   1                1
              Aristolochia.serpentaria Phytolacca.decandra Caltha.palustris Coptis.trifolia
David Hosack                         0                   0                0               0
Jane Colden                          1                   1                1               1
              Sanguinaria.canadensis Dentaria.diphylla Sarracenia.purpurea Mitella.diphylla Baptisia.tinctoria
David Hosack                       0                 0                   0                0                  0
Jane Colden                        1                 1                   1                1                  1
              Lupinus.perennis Apios.americana Ludwigia.palustris Staphylea.trifolia Circaea.quadrisulcata
David Hosack                 0               0                  0                  0                     0
Jane Colden                  1               1                  1                  1                     1
              Steironema.ciliatum Asclepias.tuberosa Verbena.hastata Hedeoma.pulegioides Pycnanthemum.incanum
David Hosack                    0                  0               0                   0                    0
Jane Colden                     1                  1               1                   1                    1
              Collinsonia.canadensis.1 Aureolaria.virginica Melampyrum.lineare Pedicularis.canadensis
David Hosack                         0                    0                  0                      0
Jane Colden                          1                    1                  1                      1
              Sambucus.canadensis Lobelia.cardinalis.1 Solidago.sqarrosa Gnaphalium.obtusifolium.1
David Hosack                    0                    0                 0                         0
Jane Colden                     1                    1                 1                         1
              Ambrosia.artemisiifolia Rudbeckia.triloba
David Hosack                        0                 0
Jane Colden                         1                 1
shannon <-diversity(jcdh, index = "shannon")
shannon
David Hosack    Jane Colden 
     4.189655      4.094345 
simpson <-diversity(jcdh, index = "simpson")
simpson
David Hosack    Jane Colden 
    0.9848485     0.9833333 

The shannon diversity index is a statstical value that is used to measure diversity within a population. One important factor to keep in mind when evaluating shannon indices assume that all species are represented in a sample, and they are not randomly sampled. For the Jane Colden Flora, this assumption is true, however from Hosack’s Flora, I wasn’t able to get the entire list into an excel file meaning that the list was not randomly sampled and it is not a complete representation of the population. It should therefore be analyez “with a grain of salt.” Nevertheless we can still look at both of these values to tell us some informatino about the two lists that we are comparing. The shannon index for Hosack’s list is approximately 4.189 while Colden’s list is approximately 4.094. What we can deduce from these values is that Hosack’s list contains more diverity than Colden’s, which is true in the sense that it simply had more species on it than did colden’s. The Simpson diversity index is a statistical value that is used to measure diversity within a population, but more specifically it takes into account both richness and evenness. This means that it measures both species abundance, and the proportion each species contribute to the whole community. We can see that these numbers are rather similar, differing only by 0.001. We can ascertain that this is due to the fact that abundance across both was always 1 because we didn’t have an inventory of exactly how many specimens Colden or Hosack had collected. Nevertheless we can also deduce that both lists are not that diverse given the fact that although each species had the same abundance (of 1), each list was not very diverse in the sense that there were just not that many species on each list. This can also be confirmed by the phylogenies that we created, they both show that species in each list come from many different families, but there were only about 60-70 species in each list.

#in order to wrap up this project and do my mastery assignment, I will compute the Bray and Jaccard index to get an even better sense of what is going on with these two lists.
library(labdsv)
jcdh <- read.csv("JCDH.csv", row.names = 1)
incomplete final line found by readTableHeader on 'JCDH.csv'
jcdh
jcdh <- as.matrix(jcdh)
dim(jcdh)
[1]   2 103
class(jcdh)
[1] "matrix"
jcdh
              Abroma.augustum Abrus.precatorius Mimosa.arborea.L. Mimosa.filicifolia.Lmk
David Hosack                1                 1                 1                      1
Jane Colden                 0                 0                 0                      0
              Mimosa.brachbyloba.Vent. Mimosa.illinoensis.Mich. Mimosa.discolor.Andr.
David Hosack                         1                        1                     1
Jane Colden                          0                        0                     0
              Mimosa.botrycephala.Vent. Mimosa.faleata.Willd. Mimosa.obliqua.Vent. Mimosa.farnesiana.L.
David Hosack                          1                     1                    1                    1
Jane Colden                           0                     0                    0                    0
              Mimosa.floribunda.Vent. Mimosa.glauea.L. Mimosa.glaucescens.Willd. Mimosa.binervia.Wend.
David Hosack                        1                1                         1                     1
Jane Colden                         0                0                         0                     0
              Mimosa.julibrissin.Ait. Mimosa.iatronum.L. Mimosa.lebbek.L. Mimosa.pennata.L.
David Hosack                        1                  1                1                 1
Jane Colden                         0                  0                0                 0
              Mimosa.pulcherrina.Willd. Mimosa.speciosa.Willd. Mimosa.suaveolens.sm. Mimosa.vera.Willd.
David Hosack                          1                      1                     1                  1
Jane Colden                           0                      0                     0                  0
              Mimosa.nilotica.L. Acalypha.carolinia.Mich. Acalypha.virginica.L. Acanthus.mollis.L.
David Hosack                   1                        1                     1                  1
Jane Colden                    0                        0                     0                  0
              Acanthus.spinosus.L. Acer.dasycarpum.Ehrt. Aralia.nudicaulis Anemone.hepatica Asarum.canadense
David Hosack                     1                     1                 1                1                1
Jane Colden                      0                     0                 1                1                1
              Betula.vulgaris Calendula.officinalis Cornus.florida Circaea.alpina Collinsonia.canadensis
David Hosack                1                     1              1              1                      1
Jane Colden                 0                     0              1              0                      1
              Convolvulus.batatas Chelone.formosa Chelone.glabra Gnaphalium.obtusifolium Helenium.autumnale
David Hosack                    1               1              1                       1                  1
Jane Colden                     0               1              0                       0                  1
              Monarda.didyma Kalmia.angustifolia Lilium.philadelphicum Lilium.superbum Lunaria.annus
David Hosack               1                   1                     1               1             1
Jane Colden                1                   1                     1               1             0
              Lysimachia.quadrifolia Medeola.virginica Mimulus.ringens Melanthium.virginicum
David Hosack                       1                 1               1                     1
Jane Colden                        1                 1               1                     0
              Lobelia.cardinalis Polygala.senega Prunus.avium Quercus.alba Rosa.alba Rubus.odoratus
David Hosack                   1               1            1            1         1              1
Jane Colden                    1               1            0            1         0              1
              Rudbeckia.perfoliata Sagittaria.latifolia Trillium.erectum Saxifraga.virgiana
David Hosack                     1                    1                1                  1
Jane Colden                      0                    1                1                  1
              Zanthoxylum.americanum Viola.canadensis Veronica.virginica Verbascum.blattarium Zea.mays
David Hosack                       1                1                  1                    1        1
Jane Colden                        0                0                  1                    1        0
              Alisma.trivialis Arisaema.triphyllum Erythronium.americanum Smilacina.racemosa
David Hosack                 0                   0                      0                  0
Jane Colden                  1                   1                      1                  1
              Maianthemum.canadense Cypripedium.calceolus Calopogon.tuberosus Saururus.cernuus
David Hosack                      0                     0                   0                0
Jane Colden                       1                     1                   1                1
              Aristolochia.serpentaria Phytolacca.decandra Caltha.palustris Coptis.trifolia
David Hosack                         0                   0                0               0
Jane Colden                          1                   1                1               1
              Sanguinaria.canadensis Dentaria.diphylla Sarracenia.purpurea Mitella.diphylla Baptisia.tinctoria
David Hosack                       0                 0                   0                0                  0
Jane Colden                        1                 1                   1                1                  1
              Lupinus.perennis Apios.americana Ludwigia.palustris Staphylea.trifolia Circaea.quadrisulcata
David Hosack                 0               0                  0                  0                     0
Jane Colden                  1               1                  1                  1                     1
              Steironema.ciliatum Asclepias.tuberosa Verbena.hastata Hedeoma.pulegioides Pycnanthemum.incanum
David Hosack                    0                  0               0                   0                    0
Jane Colden                     1                  1               1                   1                    1
              Collinsonia.canadensis.1 Aureolaria.virginica Melampyrum.lineare Pedicularis.canadensis
David Hosack                         0                    0                  0                      0
Jane Colden                          1                    1                  1                      1
              Sambucus.canadensis Lobelia.cardinalis.1 Solidago.sqarrosa Gnaphalium.obtusifolium.1
David Hosack                    0                    0                 0                         0
Jane Colden                     1                    1                 1                         1
              Ambrosia.artemisiifolia Rudbeckia.triloba
David Hosack                        0                 0
Jane Colden                         1                 1
bray = vegdist(jcdh, "bray") 
bray
            David Hosack 
Jane Colden     0.6349206
jaccard = vegdist(jcdh, "jaccard", binary=T)
jaccard
            David Hosack 
Jane Colden      0.776699
#The bray index is a dissimilarity index that is used to measure how similar or dissimlar a dataset is. We are able to do this with this list, becuase it has basically been turned into a presence/absence list, and it uses this formate to compute dissimilarity. The values range from 0-1, where 0 indicates that the lists are exactly the same and there is no dissimilarity, and as it approaches 1, the more dissimlar they are. Moreover, a value of 1 would indicate that these two lists have absolutley no species in common. A Bray value of 0.6349 shows that there is an intermediate level of dissimilarity between the two lists, thus they are averagely dissimilar, leaningn towarrds more dissimilar than similar. 
#This brings us to the Jaccard index, which is a similarity index that is used to measure similarity between the two lists. In the test, we obtained a value of 0.73, which indicates that the the lists are more similar than dissimilar. 
silverbirch_rangemap <- BIEN_ranges_load_species("Betula_pendula")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(silverbirch_rangemap, col="green", add=T)

#silverbirch is on Hosack's list
pricklyash_rangemap <- BIEN_ranges_load_species("Zanthoxylum_americanum")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(pricklyash_rangemap, col="green", add=T)

#pricklyash is on Hosack's list and was also my assigned plant 
#two rangemaps from Colden's list to see which one has the widest range 
commonsneezeweed_rangemap <- BIEN_ranges_load_species("Helenium_autumnale")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(commonsneezeweed_rangemap, col="green", add=T)

senegasnakeroot_rangemap <- BIEN_ranges_load_species("Polygala_senega")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(senegasnakeroot_rangemap, col="green", add=T)

cheloneglabra_rangemap <- BIEN_ranges_load_species("Chelone_glabra")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(cheloneglabra_rangemap, col="green", add=T)

Maianthemumcanadense_rangemap <- BIEN_ranges_load_species("Maianthemum_canadense")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(Maianthemumcanadense_rangemap, col="green", add=T)

calthapalustris_rangemap <- BIEN_ranges_load_species("Caltha_palustris")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(calthapalustris_rangemap, col="green", add=T)

calthapalustris_rangemap <- BIEN_ranges_load_species("Caltha_palustris")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(calthapalustris_rangemap, col="green", add=T)

Kalmiaangustifolia_rangemap <- BIEN_ranges_load_species("Kalmia_angustifolia")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(Kalmiaangustifolia_rangemap, col="green", add=T)

Ambrosiaartemisiifolia_rangemap <- BIEN_ranges_load_species("Ambrosia_artemisiifolia")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(Ambrosiaartemisiifolia_rangemap, col="green", add=T)

liliumsuperbum_rangemap <- BIEN_ranges_load_species("Lilium_superbum")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(liliumsuperbum_rangemap, col="green", add=T)

liliumphiladelphicum_rangemap <- BIEN_ranges_load_species("Lilium_philadelphicum")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(liliumphiladelphicum_rangemap, col="green", add=T)

prunusavium_rangemap <- BIEN_ranges_load_species("Prunus_avium")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(prunusavium_rangemap, col="green", add=T)

zeamays_rangemap <- BIEN_ranges_load_species("Zea_mays")
map('world', fill=T, col="grey", bg="light blue", xlim=c(-180,20),ylim=c(-60,80))
plot(zeamays_rangemap, col="green", add=T)

LS0tCnRpdGxlOiAiRmluYWwgUHJvamVjdCAiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KSW4gdGhpcyBub3RlYm9vayBJIHdpbGwgY29tcGFyZSB0aGUgZmxvcmEgb2YgdHdvIGNvbnRlbXBvcmFyaWVzIHRoYXQgd2UgbGVhcm5lZCBhYm91dCBpbiBjbGFzcyBuYW1lbHksIEphbmUgQ29sZGVuIGFuZCBEYXZpZCBIb3NhY2suIApgYGB7cn0KI1dlIHdpbGwgYmVnaW4gYnkgaW1wb3J0aW5nIEphbmUgQ29sZGVuJ3MgRmxvcmEgCmdldHdkKCkKc2V0d2QoIi9Vc2Vycy9BbmEtTWFyaWFSb2RyaWd1ZXovRGVza3RvcC9QbGFudHMgYW5kIHByb2ZpdHMvcG9ydGZvbGlvLTQtYW0xMjE3IikKcmVhZC5jc3YoIkphbmVDb2xkZW4uY3N2IikKSmFuZWNvbGRlbiA8LSByZWFkLmNzdigiSmFuZUNvbGRlbi5jc3YiKQpKQzwtYygiQWxpc21hIHRyaXZpYWxpcyIsCiJTYWdpdHRhcmlhIGxhdGlmb2xpYSIsCiJBcmlzYWVtYSB0cmlwaHlsbHVtIiwKIkxpbGl1bSBwaGlsYWRlbHBoaWN1bSIsIAoiTGlsaXVtIHN1cGVyYnVtIiwKIkVyeXRocm9uaXVtIGFtZXJpY2FudW0iLAoiU21pbGFjaW5hIHJhY2Vtb3NhIiwKIk1haWFudGhlbXVtIGNhbmFkZW5zZSIsCiJNZWRlb2xhIHZpcmdpbmlhbmEiLAoiVHJpbGxpdW0gZXJlY3R1bSIsCiJDeXByaXBlZGl1bSBjYWxjZW9sdXMiLAoiQ2Fsb3BvZ29uIHR1YmVyb3N1cyIsCiJTYXVydXJ1cyBjZXJudXVzIiwKIlF1ZXJjdXMgYWxiYSIsCiJBc2FydW0gY2FuYWRlbnNlIiwKIkFyaXN0b2xvY2hpYSBzZXJwZW50YXJpYSIsCiJQaHl0b2xhY2NhIGRlY2FuZHJhIiwKIkFuZW1vbmUgaGVwYXRpY2EiLAoiQ2FsdGhhIHBhbHVzdHJpcyIsCiJDb3B0aXMgdHJpZm9saWEiLAoiU2FuZ3VpbmFyaWEgY2FuYWRlbnNpcyIsCiJEZW50YXJpYSBkaXBoeWxsYSIsCiJTYXJyYWNlbmlhIHB1cnB1cmVhIiwKIk1pdGVsbGEgZGlwaHlsbGEiLAoiU2F4aWZyYWdhIHZpcmdpbmlhbmEiLAoiUnVidXMgb3Jkb3JhdHVzIiwKIkJhcHRpc2lhIHRpbmN0b3JpYSIsCiJMdXBpbnVzIHBlcmVubmlzIiwKIkFwaW9zIGFtZXJpY2FuYSIsCiJQb2x5Z2FsYSBzZW5lZ2EiLAoiTHVkd2lnaWEgcGFsdXN0cmlzIiwKIlN0YXBoeWxlYSB0cmlmb2xpYSIsCiJDaXJjYWVhIHF1YWRyaXN1bGNhdGEiLAoiQXJhbGlhIG51ZGljYXVsaXMiLAoiQ29ybnVzIGZsb3JpZGEiLAoiS2FsbWlhIGFuZ3VzdGlmb2xpYSIsCiJMeXNpbWFjaGlhIHF1YWRyaWZvbGlhIiwKIlN0ZWlyb25lbWEgY2lsaWF0dW0iLAoiQXNjbGVwaWFzIHR1YmVyb3NhIiwKIlZlcmJlbmEgaGFzdGF0YSIsCiJNb25hcmRhIGRpZHltYSIsCiJIZWRlb21hIHB1bGVnaW9pZGVzIiwKIlB5Y25hbnRoZW11bSBpbmNhbnVtIiwgCiJDb2xsaW5zb25pYSBjYW5hZGVuc2lzIiwKIlZlcmJhc2N1bSBibGF0dGFyaWEiLAoiQ2hlbG9uZSBnbGFicmEiLAoiTWltdWx1cyByaW5nZW5zIiwKIlZlcm9uaWNhc3RydW0gdmlyZ2luaWN1bSIsCiJBdXJlb2xhcmlhIHZpcmdpbmljYSIsCiJNZWxhbXB5cnVtIGxpbmVhcmUiLAoiUGVkaWN1bGFyaXMgY2FuYWRlbnNpcyIsCiJTYW1idWN1cyBjYW5hZGVuc2lzIiwKIkxvYmVsaWEgY2FyZGluYWxpcyIsCiJTb2xpZGFnbyBzcWFycm9zYSIsCiJHbmFwaGFsaXVtIG9idHVzaWZvbGl1bSIsCiJBbWJyb3NpYSBhcnRlbWlzaWlmb2xpYSIsCiJSdWRiZWNraWEgdHJpbG9iYSIsCiJIZWxlbml1bSBhdHVtbmFsZSIpCkpDCnRyZWVfcGh5bG9tYXRpY19KQzEgPC0gcGh5bG9tYXRpYyh0YXhhID0gSkMsIGdldCA9ICdQT1NUJykKcGxvdCh0cmVlX3BoeWxvbWF0aWNfSkMxLCBuby5tYXJnaW4gPSBUUlVFLCB0eXBlPSJwaHlsb2dyYW0iKQpuZXdpY2tfZm40ID0gInRyZWVfcGh5bG9tYXRpY19KQzEiCndyaXRlLnRyZWUodHJlZV9waHlsb21hdGljX0pDMSwgZmlsZT1uZXdpY2tfZm40KQojcmVwZWF0aW5nIHRvIGdldCB0cmVlIGZyb20gWmFubmUyMDE0CnRyZWVfcGh5bG9tYXRpY19KQzIgPC0gcGh5bG9tYXRpYyh0YXhhID0gSkMsIHN0b3JlZHRyZWUgPSJ6YW5uZTIwMTQiLCBnZXQgPSAnUE9TVCcpCnBsb3QodHJlZV9waHlsb21hdGljX0pDMiwgbm8ubWFyZ2luID0gVFJVRSwgdHlwZT0icGh5bG9ncmFtIikKbmV3aWNrX2ZuNSA9ICJ0cmVlX3BoeWxvbWF0aWNfSkMyIgp3cml0ZS50cmVlKHRyZWVfcGh5bG9tYXRpY19KQzIsIGZpbGU9bmV3aWNrX2ZuNSkKI2hlcmUgd2UgY3JlYXRlZCB0d28gcGh5bG9nZW5pZXMgb2YgSmFuZSBDb2xkZW4ncyBGbG9yYS4gV2UgY3JlYXRlZCBhIG5ld2ljayB0cmVlLCBhbmQgd2UgYWxzbyBjcmVhdGVkIG9uZSB1c2luZyBhIGRhdGFiYXNlIG9mIGV2b2x1dGlvbmFyeSByZWxhdGlvbnNoaXBzIHN0b3JlZCBpbiBaYW5uZSB0cmVlLgpwbG90KHRyZWVfcGh5bG9tYXRpY19KQzEsIHR5cGU9InVucm9vdGVkIikKcGxvdCh0cmVlX3BoeWxvbWF0aWNfSkMxLCB0eXBlPSJjbGFkb2dyYW0iKQpwZGZfZm4gPSAidHJlZV9waHlsb21hdGljX0pDMS5wZGYiCnBkZihmaWxlPXBkZl9mbikKcGxvdCh0cmVlX3BoeWxvbWF0aWNfSkMxLCB0eXBlPSJ1bnJvb3RlZCIsIGVkZ2Uud2lkdGg9NSwgZWRnZS5jb2xvcj0iYmx1ZSIsIGxhYjR1dD0iYXhpYWwiKQpkZXYub2ZmKCkKY21kc3RyID0gcGFzdGUoIm9wZW4gIiwgcGRmX2ZuLCBzZXA9IiIpCnN5c3RlbShjbWRzdHIpCm5ld2lja19mbiA9ICJ0cmVlX3BoeWxvbWF0aWNfSkMxIgp3cml0ZS50cmVlKHRyZWVfcGh5bG9tYXRpY19KQzEsIGZpbGU9bmV3aWNrX2ZuKQpnZXR3ZCgpCmBgYCAKYGBge3J9CiNub3cgd2Ugd2lsbCBkbyB0aGUgc2FtZSB0aGluZyB3aXRoIEhvc2FjaydzIGxpc3QsIGhvd2V2ZXIgYmVjYXVzZSBoaXMgbGlzdCBjYW1lIGZyb20gYSBwaG90b2NvcHkgb2YgaGlzIGZsb3JhIGFuZCB0aGVyZSBhcmUgb3ZlciA2MCBwYWdlcyBvZiBpdCAoSXQgd291bGQgdGFrZSBtZSA3IHllYXJzIHRvIHR5cGUgaW50byBhbiBleGNlbCBzaGVldCBzaW5jZSBJIGFscmVhZHkgdHJpZWQgdXBsb2FkaW5nIGl0IG9udG8gZ2xvYmFsbmFtZXMub3JnIHRvIGdldCBhIHRleHQgb2YgYWxsIHRoZSB3b3JkcyBvbiB0aGUgbGlzdCBhbmQgaXQgc2FpZCB0aGVyZSB3ZXJlIG9ubHkgMiB3aGVuIHRoZXJlIGFyZSBjbGVhcmx5IG92ZXIgNjAwKSBJIHdpbGwgcmFuZG9tbHkgc2VsZWN0IHNvbWUgc3BlY2llcywgYW5kIGFsc28gY2hlY2sgZm9yIGFueSBvdmVybGFwIHdpdGggQ29sZGVuJ3MgbGlzdC4gCnJlYWQuY3N2KCJEYXZpZEhvc2Fjay5jc3YiKQpEYXZpZGhvc2FjayA8LSByZWFkLmNzdigiRGF2aWRIb3NhY2suY3N2IikKREg8LWMoIkFicm9tYSBhdWd1c3R1bSIsCiJBYnJ1cyBwcmVjYXRvcml1cyIsCiJNaW1vc2EgYXJib3JlYSBMLiIsCiJNaW1vc2EgZmlsaWNpZm9saWEgTG1rIiwKIk1pbW9zYSBicmFjaGJ5bG9iYSBWZW50LiIsCiJNaW1vc2EgaWxsaW5vZW5zaXMgTWljaC4iLAoiTWltb3NhIGRpc2NvbG9yIEFuZHIuIiwKIk1pbW9zYSBib3RyeWNlcGhhbGEgVmVudC4iLAoiTWltb3NhIGZhbGVhdGEgV2lsbGQuIiwKIk1pbW9zYSBvYmxpcXVhIFZlbnQuIiwKIk1pbW9zYSBmYXJuZXNpYW5hIEwuIiwKIk1pbW9zYSBmbG9yaWJ1bmRhIFZlbnQuIiwgCiJNaW1vc2EgZ2xhdWVhIEwuIiwKIk1pbW9zYSBnbGF1Y2VzY2VucyBXaWxsZC4iLAoiTWltb3NhIGJpbmVydmlhIFdlbmQuIiwKIk1pbW9zYSBqdWxpYnJpc3NpbiBBaXQuIiwKIk1pbW9zYSBpYXRyb251bSBMLiIsCiJNaW1vc2EgbGViYmVrIEwuIiwKIk1pbW9zYSBwZW5uYXRhIEwuIiwKIk1pbW9zYSBwdWxjaGVycmluYSBXaWxsZC4iLAoiTWltb3NhIHNwZWNpb3NhIFdpbGxkLiIsCiJNaW1vc2Egc3VhdmVvbGVucyBzbS4gIiwKIk1pbW9zYSB2ZXJhIFdpbGxkLiIsCiJNaW1vc2Egbmlsb3RpY2EgTC4iLAoiQWNhbHlwaGEgY2Fyb2xpbmlhIE1pY2guIiwKIkFjYWx5cGhhIHZpcmdpbmljYSBMLiIsCiJBY2FudGh1cyBtb2xsaXMgTC4gIiwKIkFjYW50aHVzIHNwaW5vc3VzIEwuIiwKIkFjZXIgZGFzeWNhcnB1bSBFaHJ0LiIsCiJBcmFsaWEgbnVkaWNhdWxpcyIsCiJBbmVtb25lIGhlcGF0aWNhICIsCiJBc2FydW0gY2FuYWRlbnNlICIsCiJCZXR1bGEgdnVsZ2FyaXMgIiwKIkNhbGVuZHVsYSBvZmZpY2luYWxpcyIsCiJDb3JudXMgZmxvcmlkYSIsCiJDaXJjYWVhIGFscGluYSAiLAoiQ29sbGluc29uaWEgY2FuYWRlbnNpcyIsCiJDb252b2x2dWx1cyBiYXRhdGFzIiwKIkNoZWxvbmUgZm9ybW9zYSIsCiJDaGVsb25lIGdsYWJyYSIsIAoiR25hcGhhbGl1bSBvYnR1c2lmb2xpdW0iLAoiSGVsZW5pdW0gYXV0dW1uYWxlIiwKIk1vbmFyZGEgZGlkeW1hIiwKIkthbG1pYSBhbmd1c3RpZm9saWEiLAoiTGlsaXVtIHBoaWxhZGVscGhpY3VtIiwgCiJMaWxpdW0gc3VwZXJidW0iLAoiTHVuYXJpYSBhbm51cyIsCiJMeXNpbWFjaGlhIHF1YWRyaWZvbGlhIiwgCiJNZWRlb2xhIHZpcmdpbmljYSIsCiJNaW11bHVzIHJpbmdlbnMiLAoiTWVsYW50aGl1bSB2aXJnaW5pY3VtIiwKIkxvYmVsaWEgY2FyZGluYWxpcyIsCiJQb2x5Z2FsYSBzZW5lZ2EiLAoiUHJ1bnVzIGF2aXVtIiwKIlF1ZXJjdXMgYWxiYSIsCiJSb3NhIGFsYmEiLAoiUnVidXMgb2RvcmF0dXMiLAoiUnVkYmVja2lhIHBlcmZvbGlhdGEiLAoiU2FnaXR0YXJpYSBsYXRpZm9saWEiLAoiVHJpbGxpdW0gZXJlY3R1bSIsCiJTYXhpZnJhZ2EgdmlyZ2lhbmEiLAoiWmFudGhveHlsdW0gYW1lcmljYW51bSIsIAoiVmlvbGEgY2FuYWRlbnNpcyIsCiJWZXJvbmljYSB2aXJnaW5pY2EiLAoiVmVyYmFzY3VtIGJsYXR0YXJpdW0iLCAKIlplYSBtYXlzIikKREgKdHJlZV9waHlsb21hdGljX0RIMSA8LSBwaHlsb21hdGljKHRheGEgPSBESCwgZ2V0ID0gJ1BPU1QnKQpwbG90KHRyZWVfcGh5bG9tYXRpY19ESDEsIG5vLm1hcmdpbiA9IFRSVUUsIHR5cGU9InBoeWxvZ3JhbSIpCm5ld2lja19mbjQgPSAidHJlZV9waHlsb21hdGljREgxIgp3cml0ZS50cmVlKHRyZWVfcGh5bG9tYXRpY19ESDEsIGZpbGU9bmV3aWNrX2ZuNCkKI3JlcGVhdGluZyB0byBnZXQgdHJlZSBmcm9tIFphbm5lMjAxNAp0cmVlX3BoeWxvbWF0aWNfREgyIDwtIHBoeWxvbWF0aWModGF4YSA9IERILCBzdG9yZWR0cmVlID0iemFubmUyMDE0IiwgZ2V0ID0gJ1BPU1QnKQpwbG90KHRyZWVfcGh5bG9tYXRpY19ESDIsIG5vLm1hcmdpbiA9IFRSVUUsIHR5cGU9InBoeWxvZ3JhbSIpCm5ld2lja19mbjUgPSAidHJlZV9waHlsb21hdGljX0RIMiIKd3JpdGUudHJlZSh0cmVlX3BoeWxvbWF0aWNfREgyLCBmaWxlPW5ld2lja19mbjUpCiNub3cgSSB3aWxsIHBsb3QgYW5kIHNhdmUgdGhlbSBpbiBkaWZmZXJlbnQgZm9ybWF0cwpwbG90KHRyZWVfcGh5bG9tYXRpY19ESDEsIHR5cGU9InVucm9vdGVkIikKcGxvdCh0cmVlX3BoeWxvbWF0aWNfREgxLCB0eXBlPSJjbGFkb2dyYW0iKQpwZGZfZm4gPSAidHJlZV9waHlsb21hdGljX0RIMS5wZGYiCnBkZihmaWxlPXBkZl9mbikKcGxvdCh0cmVlX3BoeWxvbWF0aWNfREgxLCB0eXBlPSJ1bnJvb3RlZCIsIGVkZ2Uud2lkdGg9NSwgZWRnZS5jb2xvcj0iYmx1ZSIsIGxhYjR1dD0iYXhpYWwiKQpkZXYub2ZmKCkKY21kc3RyID0gcGFzdGUoIm9wZW4gIiwgcGRmX2ZuLCBzZXA9IiIpCnN5c3RlbShjbWRzdHIpCm5ld2lja19mbiA9ICJ0cmVlX3BoeWxvbWF0aWNfREgxIgp3cml0ZS50cmVlKHRyZWVfcGh5bG9tYXRpY19ESDEsIGZpbGU9bmV3aWNrX2ZuKQpnZXR3ZCgpCmBgYApgYGB7cn0KI05vdyB0aGF0IEkgaGF2ZSBwaHlsb2dlbml6ZWQgYm90aCBsaXN0cywgSSB3aWxsIHB1dCB0aGVtIGludG8gYSBtYXRyaXggc28gdGhhdCB3ZSBjYW4gY29tcGFyZSBzaW1pbGFyaXR5IGFuZCBkaXNzaW1pbGFyaXRpZXMgYmV0d2VlbiB0aGUgdHdvLiAKbGlicmFyeShsYWJkc3YpCmpjZGggPC0gcmVhZC5jc3YoIkpDREguY3N2Iiwgcm93Lm5hbWVzID0gMSkKamNkaApqY2RoIDwtIGFzLm1hdHJpeChqY2RoKQpkaW0oamNkaCkKY2xhc3MoamNkaCkKamNkaApzaGFubm9uIDwtZGl2ZXJzaXR5KGpjZGgsIGluZGV4ID0gInNoYW5ub24iKQpzaGFubm9uCnNpbXBzb24gPC1kaXZlcnNpdHkoamNkaCwgaW5kZXggPSAic2ltcHNvbiIpCnNpbXBzb24KYGBgCgpUaGUgc2hhbm5vbiBkaXZlcnNpdHkgaW5kZXggaXMgYSBzdGF0c3RpY2FsIHZhbHVlIHRoYXQgaXMgdXNlZCB0byBtZWFzdXJlIGRpdmVyc2l0eSB3aXRoaW4gYSBwb3B1bGF0aW9uLiBPbmUgaW1wb3J0YW50IGZhY3RvciB0byBrZWVwIGluIG1pbmQgd2hlbiBldmFsdWF0aW5nIHNoYW5ub24gaW5kaWNlcyBhc3N1bWUgdGhhdCBhbGwgc3BlY2llcyBhcmUgcmVwcmVzZW50ZWQgaW4gYSBzYW1wbGUsIGFuZCB0aGV5IGFyZSBub3QgcmFuZG9tbHkgc2FtcGxlZC4gRm9yIHRoZSBKYW5lIENvbGRlbiBGbG9yYSwgdGhpcyBhc3N1bXB0aW9uIGlzIHRydWUsIGhvd2V2ZXIgZnJvbSBIb3NhY2sncyBGbG9yYSwgSSB3YXNuJ3QgYWJsZSB0byBnZXQgdGhlIGVudGlyZSBsaXN0IGludG8gYW4gZXhjZWwgZmlsZSBtZWFuaW5nIHRoYXQgdGhlIGxpc3Qgd2FzIG5vdCByYW5kb21seSBzYW1wbGVkIGFuZCBpdCBpcyBub3QgYSBjb21wbGV0ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcG9wdWxhdGlvbi4gSXQgc2hvdWxkIHRoZXJlZm9yZSBiZSBhbmFseWV6ICJ3aXRoIGEgZ3JhaW4gb2Ygc2FsdC4iIE5ldmVydGhlbGVzcyB3ZSBjYW4gc3RpbGwgbG9vayBhdCBib3RoIG9mIHRoZXNlIHZhbHVlcyB0byB0ZWxsIHVzIHNvbWUgaW5mb3JtYXRpbm8gYWJvdXQgdGhlIHR3byBsaXN0cyB0aGF0IHdlIGFyZSBjb21wYXJpbmcuIFRoZSBzaGFubm9uIGluZGV4IGZvciBIb3NhY2sncyBsaXN0IGlzIGFwcHJveGltYXRlbHkgNC4xODkgd2hpbGUgQ29sZGVuJ3MgbGlzdCBpcyBhcHByb3hpbWF0ZWx5IDQuMDk0LiBXaGF0IHdlIGNhbiBkZWR1Y2UgZnJvbSB0aGVzZSB2YWx1ZXMgaXMgdGhhdCBIb3NhY2sncyBsaXN0IGNvbnRhaW5zIG1vcmUgZGl2ZXJpdHkgdGhhbiBDb2xkZW4ncywgd2hpY2ggaXMgdHJ1ZSBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBzaW1wbHkgaGFkIG1vcmUgc3BlY2llcyBvbiBpdCB0aGFuIGRpZCBjb2xkZW4ncy4gClRoZSBTaW1wc29uIGRpdmVyc2l0eSBpbmRleCBpcyBhIHN0YXRpc3RpY2FsIHZhbHVlIHRoYXQgaXMgdXNlZCB0byBtZWFzdXJlIGRpdmVyc2l0eSB3aXRoaW4gYSBwb3B1bGF0aW9uLCBidXQgbW9yZSBzcGVjaWZpY2FsbHkgaXQgdGFrZXMgaW50byBhY2NvdW50IGJvdGggcmljaG5lc3MgYW5kIGV2ZW5uZXNzLiBUaGlzIG1lYW5zIHRoYXQgaXQgbWVhc3VyZXMgYm90aCBzcGVjaWVzIGFidW5kYW5jZSwgYW5kIHRoZSBwcm9wb3J0aW9uIGVhY2ggc3BlY2llcyBjb250cmlidXRlIHRvIHRoZSB3aG9sZSBjb21tdW5pdHkuIFdlIGNhbiBzZWUgdGhhdCB0aGVzZSBudW1iZXJzIGFyZSByYXRoZXIgc2ltaWxhciwgZGlmZmVyaW5nIG9ubHkgYnkgMC4wMDEuIFdlIGNhbiBhc2NlcnRhaW4gdGhhdCB0aGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IGFidW5kYW5jZSBhY3Jvc3MgYm90aCB3YXMgYWx3YXlzIDEgYmVjYXVzZSB3ZSBkaWRuJ3QgaGF2ZSBhbiBpbnZlbnRvcnkgb2YgZXhhY3RseSBob3cgbWFueSBzcGVjaW1lbnMgQ29sZGVuIG9yIEhvc2FjayBoYWQgY29sbGVjdGVkLiBOZXZlcnRoZWxlc3Mgd2UgY2FuIGFsc28gZGVkdWNlIHRoYXQgYm90aCBsaXN0cyBhcmUgbm90IHRoYXQgZGl2ZXJzZSBnaXZlbiB0aGUgZmFjdCB0aGF0IGFsdGhvdWdoIGVhY2ggc3BlY2llcyBoYWQgdGhlIHNhbWUgYWJ1bmRhbmNlIChvZiAxKSwgZWFjaCBsaXN0IHdhcyBub3QgdmVyeSBkaXZlcnNlIGluIHRoZSBzZW5zZSB0aGF0IHRoZXJlIHdlcmUganVzdCBub3QgdGhhdCBtYW55IHNwZWNpZXMgb24gZWFjaCBsaXN0LiBUaGlzIGNhbiBhbHNvIGJlIGNvbmZpcm1lZCBieSB0aGUgcGh5bG9nZW5pZXMgdGhhdCB3ZSBjcmVhdGVkLCB0aGV5IGJvdGggc2hvdyB0aGF0IHNwZWNpZXMgaW4gZWFjaCBsaXN0IGNvbWUgZnJvbSBtYW55IGRpZmZlcmVudCBmYW1pbGllcywgYnV0IHRoZXJlIHdlcmUgb25seSBhYm91dCA2MC03MCBzcGVjaWVzIGluIGVhY2ggbGlzdC4gCmBgYHtyfQojaW4gb3JkZXIgdG8gd3JhcCB1cCB0aGlzIHByb2plY3QgYW5kIGRvIG15IG1hc3RlcnkgYXNzaWdubWVudCwgSSB3aWxsIGNvbXB1dGUgdGhlIEJyYXkgYW5kIEphY2NhcmQgaW5kZXggdG8gZ2V0IGFuIGV2ZW4gYmV0dGVyIHNlbnNlIG9mIHRoZSBzaW1pbGFyaXR5IGFuZCBkaXNzaW1pbGFyaXR5IGJldHdlZW4gdGhlIGxpc3RzIHNpbmNlIHRoZSBkaXZlcnNpdHkgaW5kZWNlcyB3ZXJlbid0IGFzIHVzZWZ1bCBhcyBJIGhhZCBvcmlnaW5hbGx5IGhvcGVkLgpsaWJyYXJ5KGxhYmRzdikKamNkaCA8LSByZWFkLmNzdigiSkNESC5jc3YiLCByb3cubmFtZXMgPSAxKQpqY2RoCmpjZGggPC0gYXMubWF0cml4KGpjZGgpCmRpbShqY2RoKQpjbGFzcyhqY2RoKQpqY2RoCmJyYXkgPSB2ZWdkaXN0KGpjZGgsICJicmF5IikgCmJyYXkKamFjY2FyZCA9IHZlZ2Rpc3QoamNkaCwgImphY2NhcmQiLCBiaW5hcnk9VCkKamFjY2FyZAojVGhlIGJyYXkgaW5kZXggaXMgYSBkaXNzaW1pbGFyaXR5IGluZGV4IHRoYXQgaXMgdXNlZCB0byBtZWFzdXJlIGhvdyBzaW1pbGFyIG9yIGRpc3NpbWxhciBhIGRhdGFzZXQgaXMuIFdlIGFyZSBhYmxlIHRvIGRvIHRoaXMgd2l0aCB0aGlzIGxpc3QsIGJlY3Vhc2UgaXQgaGFzIGJhc2ljYWxseSBiZWVuIHR1cm5lZCBpbnRvIGEgcHJlc2VuY2UvYWJzZW5jZSBsaXN0LCBhbmQgaXQgdXNlcyB0aGlzIGZvcm1hdGUgdG8gY29tcHV0ZSBkaXNzaW1pbGFyaXR5LiBUaGUgdmFsdWVzIHJhbmdlIGZyb20gMC0xLCB3aGVyZSAwIGluZGljYXRlcyB0aGF0IHRoZSBsaXN0cyBhcmUgZXhhY3RseSB0aGUgc2FtZSBhbmQgdGhlcmUgaXMgbm8gZGlzc2ltaWxhcml0eSwgYW5kIGFzIGl0IGFwcHJvYWNoZXMgMSwgdGhlIG1vcmUgZGlzc2ltbGFyIHRoZXkgYXJlLiBNb3Jlb3ZlciwgYSB2YWx1ZSBvZiAxIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlc2UgdHdvIGxpc3RzIGhhdmUgYWJzb2x1dGxleSBubyBzcGVjaWVzIGluIGNvbW1vbi4gQSBCcmF5IHZhbHVlIG9mIDAuNjM0OSBzaG93cyB0aGF0IHRoZXJlIGlzIGFuIGludGVybWVkaWF0ZSBsZXZlbCBvZiBkaXNzaW1pbGFyaXR5IGJldHdlZW4gdGhlIHR3byBsaXN0cywgdGh1cyB0aGV5IGFyZSBhdmVyYWdlbHkgZGlzc2ltaWxhciwgbGVhbmluZ24gdG93YXJyZHMgbW9yZSBkaXNzaW1pbGFyIHRoYW4gc2ltaWxhci4gCiNUaGlzIGJyaW5ncyB1cyB0byB0aGUgSmFjY2FyZCBkaXN0YW5jZSBpbmRleCwgd2hpY2ggaXMgYSBkaXNzaW1pbGFyaXR5IGluZGV4IHRoYXQgaXMgdXNlZCB0byBtZWFzdXJlIHNpbWlsYXJpdHkgYmV0d2VlbiB0aGUgdHdvIGxpc3RzLiBJbiB0aGUgdGVzdCwgd2Ugb2J0YWluZWQgYSB2YWx1ZSBvZiAwLjczLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgdGhlIGxpc3RzIGFyZSBtb3JlIGRpc2ltaWxhciB0aGFuIHNpbWlsYXIsIHdoaWNoIGFncmVlcyB3aXRoIHRoZSBwcmV2aW91cyB2YWx1ZSB0aGF0IHdhcyBvYnN0YWluZWQuIE92ZXJhbGwgd2l0aCB0aGVzZSA0IGRpdmVyc2l0eSBpbmRpY2VzIHRoYXQgd2VyZSBvYnRhaW5lZCB3ZSBjYW4gY29uY2x1ZGUgMyB0aGluZ3MgRmlyc3RseSwgdGhlc2UgdHdvIGxpc3RzIGFyZSBub3QgZGl2ZXJzZSBpbiB0aGUgc2Vuc2UgdGhhdCB0aGV5IHBoeXNpY2FsbHkgZG9uJ3QgY29udGFpbiBhIGxhcmdlIGFtb3VudCBvZiBzcGVjaWVzLiBUaGlzIHdhcyBkZXRlcm1pbmVkIGJ5IFNpbXBzb24ncyBJbmRleCAobGltaXRhdGlvbiB0byB0aGlzIGlzIHRoYXQgSSB3YXNuJ3QgYWJsZSB0byB0cmFuc2NyaWJlIEhvc2FjaydzIGVudGlyZSBsaXN0KS4gU2Vjb25kbHksIHRoZSBsaXN0cyBhcmUgZGl2ZXJzZSBpbiB0aGUgc2Vuc2UgdGhhdCB0aGVpciBhYnVuZGFuY2U7IHRoaXMgd2FzIGRldGVybWluZWQgYnkgdGhlIHNoYW5ub24gaW5kZXggYW5kIGZpbmFsbHksIHRoZXkgYXJlIG1vcmUgZGlzc2ltbGFyIGZyb20gZWFjaG90aGVyLCBhcyBpbmRpY2F0ZWQgYnkgYm90aCBCcmF5IGFuZCBKYWNjYXJkIGluZGljZXMuIApgYGAKCmBgYHtyfQojaGVyZSBJIGp1c3Qgc3RhcnRlZCBtYXBwaW5nIHJhbmdlbWFwcyBvZiB0aGUgc3BlY2llcyBvbiBlYWNoIGxpc3RzIGJlY2F1c2UgSSBsaWtlIG1hcHMgYW5kIEkgYWxzbyB3YXMgY3VyaW91cyB0byBzZWUgd2hlcmUgZWxzZSBpbiB0aGUgV2VzdGVybiBIZW1pc2hwaGVyZSB0aGVzZSBwbGFudHMgY291bGQgYmUgZm91bmQgCm1hcCgnd29ybGQnLCBmaWxsPVQsIGNvbD0iZ3JleSIsIGJnPSJsaWdodCBibHVlIiwgeGxpbT1jKC0xODAsMjApLHlsaW09YygtNjAsODApKQpwbG90KHdoaXRlb2FrX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCiNXaGl0ZW9hayBhcHBlYXJzIG9uIGJvdGggQ29sZGVuIGFuZCBIb3NhY2sncyBsaXN0c20Kc2lsdmVyYmlyY2hfcmFuZ2VtYXAgPC0gQklFTl9yYW5nZXNfbG9hZF9zcGVjaWVzKCJCZXR1bGFfcGVuZHVsYSIpCm1hcCgnd29ybGQnLCBmaWxsPVQsIGNvbD0iZ3JleSIsIGJnPSJsaWdodCBibHVlIiwgeGxpbT1jKC0xODAsMjApLHlsaW09YygtNjAsODApKQpwbG90KHNpbHZlcmJpcmNoX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCiNzaWx2ZXJiaXJjaCBpcyBvbiBIb3NhY2sncyBsaXN0CmBgYApgYGB7cn0KcHJpY2tseWFzaF9yYW5nZW1hcCA8LSBCSUVOX3Jhbmdlc19sb2FkX3NwZWNpZXMoIlphbnRob3h5bHVtX2FtZXJpY2FudW0iKQptYXAoJ3dvcmxkJywgZmlsbD1ULCBjb2w9ImdyZXkiLCBiZz0ibGlnaHQgYmx1ZSIsIHhsaW09YygtMTgwLDIwKSx5bGltPWMoLTYwLDgwKSkKcGxvdChwcmlja2x5YXNoX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCiNwcmlja2x5YXNoIGlzIG9uIEhvc2FjaydzIGxpc3QgYW5kIHdhcyBhbHNvIG15IGFzc2lnbmVkIHBsYW50IApgYGAKCmBgYHtyfQojdHdvIHJhbmdlbWFwcyBmcm9tIENvbGRlbidzIGxpc3QgdG8gc2VlIHdoaWNoIG9uZSBoYXMgdGhlIHdpZGVzdCByYW5nZSAod2hpY2ggc3BlY2llcyBhcmUgZmFydGhlc3Qgbm9ydGggYW5kIHdoaWNoIGFyZSBmYXRoZXN0IFNvdXRoKQpjb21tb25zbmVlemV3ZWVkX3JhbmdlbWFwIDwtIEJJRU5fcmFuZ2VzX2xvYWRfc3BlY2llcygiSGVsZW5pdW1fYXV0dW1uYWxlIikKbWFwKCd3b3JsZCcsIGZpbGw9VCwgY29sPSJncmV5IiwgYmc9ImxpZ2h0IGJsdWUiLCB4bGltPWMoLTE4MCwyMCkseWxpbT1jKC02MCw4MCkpCnBsb3QoY29tbW9uc25lZXpld2VlZF9yYW5nZW1hcCwgY29sPSJncmVlbiIsIGFkZD1UKQoKc2VuZWdhc25ha2Vyb290X3JhbmdlbWFwIDwtIEJJRU5fcmFuZ2VzX2xvYWRfc3BlY2llcygiUG9seWdhbGFfc2VuZWdhIikKbWFwKCd3b3JsZCcsIGZpbGw9VCwgY29sPSJncmV5IiwgYmc9ImxpZ2h0IGJsdWUiLCB4bGltPWMoLTE4MCwyMCkseWxpbT1jKC02MCw4MCkpCnBsb3Qoc2VuZWdhc25ha2Vyb290X3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpjaGVsb25lZ2xhYnJhX3JhbmdlbWFwIDwtIEJJRU5fcmFuZ2VzX2xvYWRfc3BlY2llcygiQ2hlbG9uZV9nbGFicmEiKQptYXAoJ3dvcmxkJywgZmlsbD1ULCBjb2w9ImdyZXkiLCBiZz0ibGlnaHQgYmx1ZSIsIHhsaW09YygtMTgwLDIwKSx5bGltPWMoLTYwLDgwKSkKcGxvdChjaGVsb25lZ2xhYnJhX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpNYWlhbnRoZW11bWNhbmFkZW5zZV9yYW5nZW1hcCA8LSBCSUVOX3Jhbmdlc19sb2FkX3NwZWNpZXMoIk1haWFudGhlbXVtX2NhbmFkZW5zZSIpCm1hcCgnd29ybGQnLCBmaWxsPVQsIGNvbD0iZ3JleSIsIGJnPSJsaWdodCBibHVlIiwgeGxpbT1jKC0xODAsMjApLHlsaW09YygtNjAsODApKQpwbG90KE1haWFudGhlbXVtY2FuYWRlbnNlX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpjYWx0aGFwYWx1c3RyaXNfcmFuZ2VtYXAgPC0gQklFTl9yYW5nZXNfbG9hZF9zcGVjaWVzKCJDYWx0aGFfcGFsdXN0cmlzIikKbWFwKCd3b3JsZCcsIGZpbGw9VCwgY29sPSJncmV5IiwgYmc9ImxpZ2h0IGJsdWUiLCB4bGltPWMoLTE4MCwyMCkseWxpbT1jKC02MCw4MCkpCnBsb3QoY2FsdGhhcGFsdXN0cmlzX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpjYWx0aGFwYWx1c3RyaXNfcmFuZ2VtYXAgPC0gQklFTl9yYW5nZXNfbG9hZF9zcGVjaWVzKCJDYWx0aGFfcGFsdXN0cmlzIikKbWFwKCd3b3JsZCcsIGZpbGw9VCwgY29sPSJncmV5IiwgYmc9ImxpZ2h0IGJsdWUiLCB4bGltPWMoLTE4MCwyMCkseWxpbT1jKC02MCw4MCkpCnBsb3QoY2FsdGhhcGFsdXN0cmlzX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpLYWxtaWFhbmd1c3RpZm9saWFfcmFuZ2VtYXAgPC0gQklFTl9yYW5nZXNfbG9hZF9zcGVjaWVzKCJLYWxtaWFfYW5ndXN0aWZvbGlhIikKbWFwKCd3b3JsZCcsIGZpbGw9VCwgY29sPSJncmV5IiwgYmc9ImxpZ2h0IGJsdWUiLCB4bGltPWMoLTE4MCwyMCkseWxpbT1jKC02MCw4MCkpCnBsb3QoS2FsbWlhYW5ndXN0aWZvbGlhX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpBbWJyb3NpYWFydGVtaXNpaWZvbGlhX3JhbmdlbWFwIDwtIEJJRU5fcmFuZ2VzX2xvYWRfc3BlY2llcygiQW1icm9zaWFfYXJ0ZW1pc2lpZm9saWEiKQptYXAoJ3dvcmxkJywgZmlsbD1ULCBjb2w9ImdyZXkiLCBiZz0ibGlnaHQgYmx1ZSIsIHhsaW09YygtMTgwLDIwKSx5bGltPWMoLTYwLDgwKSkKcGxvdChBbWJyb3NpYWFydGVtaXNpaWZvbGlhX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpsaWxpdW1zdXBlcmJ1bV9yYW5nZW1hcCA8LSBCSUVOX3Jhbmdlc19sb2FkX3NwZWNpZXMoIkxpbGl1bV9zdXBlcmJ1bSIpCm1hcCgnd29ybGQnLCBmaWxsPVQsIGNvbD0iZ3JleSIsIGJnPSJsaWdodCBibHVlIiwgeGxpbT1jKC0xODAsMjApLHlsaW09YygtNjAsODApKQpwbG90KGxpbGl1bXN1cGVyYnVtX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpsaWxpdW1waGlsYWRlbHBoaWN1bV9yYW5nZW1hcCA8LSBCSUVOX3Jhbmdlc19sb2FkX3NwZWNpZXMoIkxpbGl1bV9waGlsYWRlbHBoaWN1bSIpCm1hcCgnd29ybGQnLCBmaWxsPVQsIGNvbD0iZ3JleSIsIGJnPSJsaWdodCBibHVlIiwgeGxpbT1jKC0xODAsMjApLHlsaW09YygtNjAsODApKQpwbG90KGxpbGl1bXBoaWxhZGVscGhpY3VtX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgpwcnVudXNhdml1bV9yYW5nZW1hcCA8LSBCSUVOX3Jhbmdlc19sb2FkX3NwZWNpZXMoIlBydW51c19hdml1bSIpCm1hcCgnd29ybGQnLCBmaWxsPVQsIGNvbD0iZ3JleSIsIGJnPSJsaWdodCBibHVlIiwgeGxpbT1jKC0xODAsMjApLHlsaW09YygtNjAsODApKQpwbG90KHBydW51c2F2aXVtX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgp6ZWFtYXlzX3JhbmdlbWFwIDwtIEJJRU5fcmFuZ2VzX2xvYWRfc3BlY2llcygiWmVhX21heXMiKQptYXAoJ3dvcmxkJywgZmlsbD1ULCBjb2w9ImdyZXkiLCBiZz0ibGlnaHQgYmx1ZSIsIHhsaW09YygtMTgwLDIwKSx5bGltPWMoLTYwLDgwKSkKcGxvdCh6ZWFtYXlzX3JhbmdlbWFwLCBjb2w9ImdyZWVuIiwgYWRkPVQpCgojRnJvbSB0aGVzZSByYW5nZW1hcHMgSSBsZWFybmVkIHRoYXQgc3BlY2llcyBmcm9tIEhvc2FjaydzIGFuZCBDb2xkZW4ncyBsaXN0IGhhdmUgYSB3aWRlIGxvbmdpdHVkaW5hbCByYW5nZSBhbmQgY2FuIGJlIGZvdW5kIGFsbCB0aHJvdWdob3V0IHRoZSBBbWVyaWNhJ3Mgbm90IGp1c3QgYSBOZXcgWW9yay4gQW4gaW50ZXJlc3RpbmcgZm9sbG93IHVwIHF1ZXN0aW9uIHRvIHRoaXMgd291bGQgYmUgdG8gbWFwIGhvdyB0aGVzZSByYW5nZW1hcHMgaGF2ZSBiZWVuIGlmIGF0IGFsbCBhZmZlY3RlZCBieSBjbGltYXRlIGNoYW5nZSwgZXNwZWNpYWxseSBhZ3JpY3VsdHVyYWxseSBpbXBvcnRhbnQgY3JvcHMgbGlrZSBaZWEgTWF5cy4gCmBgYAoKCgoK